From 9639f3da4fbb1240b5501588ce2e33896f28957d Mon Sep 17 00:00:00 2001 From: Ewan Mellor Date: Wed, 21 Mar 2007 12:03:42 +0000 Subject: [PATCH] Change xm dmesg -c so that it prints out the current buffer as well as clearing it. This avoids a race so that you don't lose messages, matches the behaviour of the hypercall, and the Unix dmesg command. Change the Xen-API binding to use a separate function host.dmesg_clear rather than a flag on host.dmesg. Signed-off-by: Ewan Mellor --- tools/python/xen/xend/XendAPI.py | 11 ++++++----- tools/python/xen/xend/XendDmesg.py | 3 ++- tools/python/xen/xm/main.py | 15 +++++++-------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/tools/python/xen/xend/XendAPI.py b/tools/python/xen/xend/XendAPI.py index a0f7c351b4..de9c1bffb1 100644 --- a/tools/python/xen/xend/XendAPI.py +++ b/tools/python/xen/xend/XendAPI.py @@ -665,6 +665,7 @@ class XendAPI(object): ('add_to_other_config', None), ('remove_from_other_config', None), ('dmesg', 'String'), + ('dmesg_clear', 'String'), ('get_log', 'String'), ('send_debug_keys', None)] @@ -742,11 +743,11 @@ class XendAPI(object): return xen_api_error(XEND_ERROR_HOST_RUNNING) return xen_api_error(XEND_ERROR_UNSUPPORTED) - def host_dmesg(self, session, host_ref, clear): - if clear: - return xen_api_success(XendDmesg.instance().clear()) - else: - return xen_api_success(XendDmesg.instance().info()) + def host_dmesg(self, session, host_ref): + return xen_api_success(XendDmesg.instance().info()) + + def host_dmesg_clear(self, session, host_ref): + return xen_api_success(XendDmesg.instance().clear()) def host_get_log(self, session, host_ref): log_file = open(XendLogging.getLogFilename()) diff --git a/tools/python/xen/xend/XendDmesg.py b/tools/python/xen/xend/XendDmesg.py index a3bc8c45b4..f4d0ff6be3 100644 --- a/tools/python/xen/xend/XendDmesg.py +++ b/tools/python/xen/xend/XendDmesg.py @@ -13,6 +13,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #============================================================================ # Copyright (C) 2004, 2005 Mike Wray +# Copyright (C) 2007 XenSource Inc. #============================================================================ """Get dmesg output for this node. @@ -28,7 +29,7 @@ class XendDmesg: return self.xc.readconsolering() def clear(self): - self.xc.readconsolering(True) + return self.xc.readconsolering(True) def instance(): global inst diff --git a/tools/python/xen/xm/main.py b/tools/python/xen/xm/main.py index 66a5951f7f..372b4b2510 100644 --- a/tools/python/xen/xm/main.py +++ b/tools/python/xen/xm/main.py @@ -217,7 +217,7 @@ SUBCOMMAND_OPTIONS = { ('-q', '--quiet', 'Do not print an error message if the domain does not exist'), ), 'dmesg': ( - ('-c', '--clear', 'Clear dmesg buffer'), + ('-c', '--clear', 'Clear dmesg buffer as well as printing it'), ), 'vnet-list': ( ('-l', '--long', 'List Vnets as SXP'), @@ -1587,17 +1587,16 @@ def xm_dmesg(args): usage('dmesg') if serverType == SERVER_XEN_API: - if not use_clear: - print server.xenapi.host.dmesg( - server.xenapi.session.get_this_host(),0) + host = server.xenapi.session.get_this_host() + if use_clear: + print server.xenapi.host.dmesg_clear(host), else: - server.xenapi.host.dmesg( - server.xenapi.session.get_this_host(),1) + print server.xenapi.host.dmesg(host), else: if not use_clear: - print server.xend.node.dmesg.info() + print server.xend.node.dmesg.info(), else: - server.xend.node.dmesg.clear() + print server.xend.node.dmesg.clear(), def xm_log(args): arg_check(args, "log", 0) -- 2.30.2